package com.example.demo.mapper;

import com.example.demo.entity.Articleinfo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

@Mapper
public interface ArticleMapper {
    // 3. 获取用户列表的左侧小拦的用户信息 -> 用户名和文章数目.
    //    文章数目是在文章表(articleMapper.xml)查询的 因此要拿到用户id.
    Integer getArtCountBYUid(@Param("uid") Integer uid);

    // 4. 查询个人文章列表页信息
    List<Articleinfo> getMyList(@Param("uid") Integer uid);

    // 5. 根据有文章id删除个人文章列表的文章
    Integer delete(@Param("id") Integer id, @Param("uid") Integer uid);

    // 6. 查询文章详情
    Articleinfo getDetail(@Param("id") Integer id);

    // 8. 实现文章阅读量+1    此处的参数是文章id.
    Integer updateRCount(@Param("id") Integer id);

    // 9. 添加文章
    Integer add(Articleinfo articleinfo);

    // 10. 修改文章信息
    Integer update(Articleinfo articleinfo);

    // 11. 文章公共列表页(分页)
    List<Articleinfo> getListByPage(@Param("psize") Integer psize, @Param("offsize") Integer offsize);

    Integer getTotalCount();

    // 保存为草稿
    Integer addDraftList(Articleinfo articleinfo);

    // 修改草稿
    Integer updateDraft(Articleinfo articleinfo);

    // 获取文章草稿列表
    List<Articleinfo> getDraftList(@Param("uid") Integer uid, @Param("state") Integer state);

    // 查询草稿总数
    Integer getDraftCount(@Param("uid") Integer uid, @Param("state") Integer state);

    // 获取文章点赞 数目
    Integer getPrizeCount(@Param("id") Integer id);

    // 增加点赞数
    Integer updPrizeCount(@Param("id") Integer id);

    // 减少点赞数
    Integer incPrizeCount(@Param("id") Integer id);

    // 查询单独的一篇文章
    Articleinfo getArticle(@Param("id") Integer id);

    // 查询用户点赞列表
    List<Articleinfo> getUpvoteArtList(@Param("id") Integer id);

    // 查询用户收藏的文章数
    Integer selUserUpvoteCount(@Param("id") Integer id);

    // 根据搜索框的内容查询文章(文章标题)
    List<Articleinfo> searchListByTitle(@Param("title") String title);

    // 根据文章作者查询
    List<Articleinfo> searchListByNickName(@Param("nickname") String nickname);
}